<?php

require_once '../classes/Utente.php';
require_once '../classes/UtenteManager.php';
require_once '../classes/UtenteDataManager.php';
require_once '../classes/ConnectionDB.php';
require_once '../classes/ErrorsManager.php';

$db = ConnectionDB::getInstance()->connectToDB();

if (isset($_POST["operation"]))
{
    $operation = $_POST["operation"];

    if($operation=='forcePassword')
    {
        $password= $_POST["password"];
        $codice= $_POST["codice"];
        error_log("force password  : " . $password);
        UtenteDataManager::getInstance()->forcePassword($db, $password, $codice);
    }

    if($operation == 'updateStudente')
    {
      $codice = $_POST["codice"];
      $nome = $_POST["nome"];
      $cognome = $_POST["cognome"];
      $email = $_POST["email"];
      $username = $_POST["username"];
      $password = $_POST["password"];

      UtenteDataManager::getInstance()->updateStudente($db, $codice, $nome, $cognome, $username, $password, $email);
    }

    if ($operation == 'nuovaDiscipliana')
    {
        $codiceUtente = $_POST["codiceUtente"];
        $codiceDisciplina = $_POST["codiceDisciplina"];

        if (!UtenteDataManager::getInstance()->existUtenteDisciplina($db, $codiceUtente, $codiceDisciplina))
            UtenteDataManager::getInstance()->insertUtenteDisciplina($db, $codiceUtente, $codiceDisciplina);
        header("Location:disciplineUtente.php");
    }

    if($operation == 'deleteUser')
    {
        $codiceUtente = $_POST["codice"];
        UtenteDataManager::getInstance()->eliminaUtente($db, $codiceUtente);
        echo '';
    }
    if ($operation == 'eliminaDisc')
    {
        $codiceUtente = $_COOKIE["codiceUtente"];
        $codiceDisciplina = $_POST["codiceDisciplina"];

        UtenteDataManager::getInstance()->eliminaUtenteDisciplina($db, $codiceUtente, $codiceDisciplina);
        header("Location:disciplineUtente.php");
    }

    if ($operation == 'findUser')
    {
        $username = $_POST["username"];
        $nome = $_POST["nome"];
        $cognome = $_POST["cognome"];
        $utenti = UtenteDataManager::getInstance()->getUsers($db, $username, $nome, $cognome);


        $utente = new Utente();
        $utente->setAttivo($attivo);
        $utente->setCodice($codiceUtente);
        $utente->setNome($nome);
        $utente->setCogome($cognome);
        $utente->setEmail($email);
        $utente->setDataCreazione($dataRegistrazione);
        $utente->setDisciplina($nomeDisciplina);
        $utente->setUsername($username);

        for ($j = 0; $j < count($utenti); $j++)
        {
            $vettoreUtenti[] = array("codice" => $utenti[$j]->getCodice(),
                      "attivo" => $utenti[$j]->getAttivo(),
                      "nome" => $utenti[$j]->getNome(),
                      "cognome" => $utenti[$j]->getCognome(),
                      "email" => $utenti[$j]->getEmail(),
                      "dataRegistrazione" => $utenti[$j]->getDataCreazione(),
                      "nomeDisciplina" => $utenti[$j]->getDisciplina(),
                      "username" => $utenti[$j]->getUsername()
            );
        }

        printf(json_encode($vettoreUtenti));
    }
} // end if isset operation
else
{
    $errors = array();

    $attivo = $_POST["attivo"];
    $username = $_POST["username"];
    $password = $_POST["password"];
    $nome = $_POST["nome"];
    $cognome = $_POST["cognome"];
    $email = $_POST["email"];

    if ($username == "")
        $errors[] = '1';
    if ($password == "")
        $errors[] = '2';
    if ($nome == "")
        $errors[] = '3';
    if ($cognome == "")
        $errors[] = '4';
    if ($email == "")
        $errors[] = '5';

    if (UtenteDataManager::getInstance()->usernamePresent($db, $username))
        $errors[] = '28';

    if (count($errors) > 0)
    {
        $resp = ErrorsManager::getInstance()->manageErrors($errors);
        echo '' . $resp;
    }

    else
    {
        $utente = new Utente();
        $utente->setCogome($cognome);
        $utente->setEmail($email);
        $utente->setNome($nome);
        $utente->setPassword($password);
        $utente->setUsername($username);
        $utente->setAttivo($attivo);

        UtenteManager::getInstance()->insertUtente($db, $utente);
    }
}
?>
